{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 音乐网站用户流失预测 -- train数据探索 & 特征工程\n",
    "\n",
    "### 数据集说明\n",
    "\n",
    "项目提供KKBOX用户——歌曲重复播放记录，以及用户和歌曲的元数据。训练数据由2017年2月服务到期的用户构成，target标签代表用户在2017年3月是否续订了业务。测试集中的数据由2017年3月内将到期的用户构成，需要预测用户是否在到期后的一个月内即2017年4月预定、流失的概率。\n",
    "\n",
    "以下是文件及字段说明：\n",
    "\n",
    "1. train.csv: 训练数据，共7,377,418条记录 \n",
    "\n",
    "    msno: 用户id，加密String\n",
    "\n",
    "    song_id: song id，歌曲id\n",
    "\n",
    "    source_system_tab: 触发事件的类型/tab，用于表示app的功能类型\n",
    "\n",
    "    source_screen_name: 用户看到的布局的名字（name of the layout）\n",
    "\n",
    "    source_type: 用户在app上播放音乐的入口的类型\n",
    "\n",
    "    target: 标签。1表示用户在第一次听音乐后会在一个月内继续订阅，0表示没有订阅。\n",
    "\n",
    "2. test.csv ：测试数据，共2,556,790条记录 \n",
    "\n",
    "    id: id (用于结果提交)\n",
    "\n",
    "    msno: 用户id\n",
    "\n",
    "    song_id: 歌曲id\n",
    "\n",
    "    source_system_tab: 触发事件的类型/tab，用于表示app的功能类型\n",
    "\n",
    "    source_screen_name: 用户看到的布局的名字（name of the layout）\n",
    "\n",
    "    source_type: 用户在app上播放音乐的入口的类型\n",
    "\n",
    "3. sampleSubmission.csv：提交结果文件样例 \n",
    "\n",
    "    提交测试结果包含两个字段，分别为测试样本id及其标签为1的概率，格式如下：\n",
    "\n",
    "    id,target\n",
    "    \n",
    "    2,0.3\n",
    "    \n",
    "    5,0.1\n",
    "    \n",
    "    6,1\n",
    "    \n",
    "    etc.\n",
    "\n",
    "4. songs.csv：歌曲元数据信息，用unicode编码 \n",
    "\n",
    "    song_id：歌曲id\n",
    "\n",
    "    song_length: 单位为ms\n",
    "\n",
    "    genre_ids: genre 类别. 可多选，用 “|“隔开\n",
    "\n",
    "    artist_name：歌手\n",
    "\n",
    "    composer：作曲\n",
    "\n",
    "    lyricist：作词\n",
    "\n",
    "    language：语言\n",
    "\n",
    "5. members.csv：用户元数据信息\n",
    "\n",
    "    msno：用户id\n",
    "\n",
    "    city：城市\n",
    "\n",
    "    bd: 年龄。注意：年龄数据有离群点\n",
    "\n",
    "    gender：性别\n",
    "\n",
    "    registered_via: 注册方式\n",
    "\n",
    "    registration_init_time: 注册时间，格式为%Y%m%d\n",
    "\n",
    "    expiration_date: 到期时间，格式为 %Y%m%d\n",
    "\n",
    "6. song_extra_infos.csv：歌曲额外的信息\n",
    "\n",
    "    song_id：歌曲id\n",
    "\n",
    "    song name ：歌曲名字\n",
    "\n",
    "    isrc – 国际标准音像制品编码(International Standard Recording Code )。理论上可用于歌曲id，但产生的ISR没有经过官方授权。因此ISRC中的信息，如国家代码和参考年份可能不正确。且多首歌曲可能共享共一个ISRC，因为一首歌曲的音像制可发行多次。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1、导入工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "# 要注意的是一旦导入了seaborn，matplotlib的默认作图风格就会被覆盖成seaborn的格式\n",
    "import seaborn as sns\n",
    "\n",
    "# 矩阵完整显示\n",
    "np.set_printoptions(threshold=np.inf)\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2、train.csv数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>msno</th>\n",
       "      <th>song_id</th>\n",
       "      <th>source_system_tab</th>\n",
       "      <th>source_screen_name</th>\n",
       "      <th>source_type</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=</td>\n",
       "      <td>BBzumQNXUHKdEBOB7mAJuzok+IJA1c2Ryg/yzTF6tik=</td>\n",
       "      <td>explore</td>\n",
       "      <td>Explore</td>\n",
       "      <td>online-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=</td>\n",
       "      <td>bhp/MpSNoqoxOIB+/l8WPqu6jldth4DIpCm3ayXnJqM=</td>\n",
       "      <td>my library</td>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>local-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=</td>\n",
       "      <td>JNWfrrC7zNN7BdMpsISKa4Mw+xVJYNnxXh3/Epw7QgY=</td>\n",
       "      <td>my library</td>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>local-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=</td>\n",
       "      <td>2A87tzfnJTSWqD7gIZHisolhe4DMdzkbd6LzO1KHjNs=</td>\n",
       "      <td>my library</td>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>local-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=</td>\n",
       "      <td>3qm6XTZ6MOCU11x8FIVbAGH5l5uMkT3/ZalWG1oo2Gc=</td>\n",
       "      <td>explore</td>\n",
       "      <td>Explore</td>\n",
       "      <td>online-playlist</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                           msno  \\\n",
       "0  FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=   \n",
       "1  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
       "2  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
       "3  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
       "4  FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=   \n",
       "\n",
       "                                        song_id source_system_tab  \\\n",
       "0  BBzumQNXUHKdEBOB7mAJuzok+IJA1c2Ryg/yzTF6tik=           explore   \n",
       "1  bhp/MpSNoqoxOIB+/l8WPqu6jldth4DIpCm3ayXnJqM=        my library   \n",
       "2  JNWfrrC7zNN7BdMpsISKa4Mw+xVJYNnxXh3/Epw7QgY=        my library   \n",
       "3  2A87tzfnJTSWqD7gIZHisolhe4DMdzkbd6LzO1KHjNs=        my library   \n",
       "4  3qm6XTZ6MOCU11x8FIVbAGH5l5uMkT3/ZalWG1oo2Gc=           explore   \n",
       "\n",
       "    source_screen_name      source_type  target  \n",
       "0              Explore  online-playlist       1  \n",
       "1  Local playlist more   local-playlist       1  \n",
       "2  Local playlist more   local-playlist       1  \n",
       "3  Local playlist more   local-playlist       1  \n",
       "4              Explore  online-playlist       1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "(7377418, 6)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dpath = '../data/'\n",
    "train = pd.read_csv(dpath +'train.csv')\n",
    "train.head()\n",
    "train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 7377418 entries, 0 to 7377417\n",
      "Data columns (total 6 columns):\n",
      "msno                  object\n",
      "song_id               object\n",
      "source_system_tab     object\n",
      "source_screen_name    object\n",
      "source_type           object\n",
      "target                int64\n",
      "dtypes: int64(1), object(5)\n",
      "memory usage: 337.7+ MB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1、查看每个特征的缺失值数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "msno                       0\n",
       "song_id                    0\n",
       "source_system_tab      24849\n",
       "source_screen_name    414804\n",
       "source_type            21539\n",
       "target                     0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.apply(lambda x: sum(x.isnull()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**下面先看看各个缺失特征的分布情况**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2、查看缺失的特征分布情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "source_system_tab属性有9种不同取值，各取值及其出现的次数\n",
      "\n",
      "my library      3684730\n",
      "discover        2179252\n",
      "search           623286\n",
      "radio            476701\n",
      "listen with      212266\n",
      "explore          167949\n",
      "notification       6185\n",
      "settings           2200\n",
      "Name: source_system_tab, dtype: int64\n",
      "\n",
      "source_screen_name属性有21种不同取值，各取值及其出现的次数\n",
      "\n",
      "Local playlist more     3228202\n",
      "Online playlist more    1294689\n",
      "Radio                    474467\n",
      "Album more               420156\n",
      "Search                   298487\n",
      "Artist more              252429\n",
      "Discover Feature         244246\n",
      "Discover Chart           213658\n",
      "Others profile more      201795\n",
      "Discover Genre            82202\n",
      "My library                75980\n",
      "Explore                   72342\n",
      "Unknown                   54170\n",
      "Discover New              15955\n",
      "Search Trends             13632\n",
      "Search Home               13482\n",
      "My library_Search          6451\n",
      "Self profile more           212\n",
      "Concert                      47\n",
      "Payment                      12\n",
      "Name: source_screen_name, dtype: int64\n",
      "\n",
      "source_type属性有13种不同取值，各取值及其出现的次数\n",
      "\n",
      "local-library             2261399\n",
      "online-playlist           1967924\n",
      "local-playlist            1079503\n",
      "radio                      483109\n",
      "album                      477344\n",
      "top-hits-for-artist        423614\n",
      "song                       244722\n",
      "song-based-playlist        210527\n",
      "listen-with                192842\n",
      "topic-article-playlist      11194\n",
      "artist                       3038\n",
      "my-daily-playlist             663\n",
      "Name: source_type, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "cat_features = ['source_system_tab','source_screen_name','source_type']\n",
    "for col in cat_features:\n",
    "    num_vlaules = len(train[col].unique())\n",
    "    print('\\n%s属性有%d种不同取值，各取值及其出现的次数\\n'% (col,num_vlaules))\n",
    "    print(train[col].value_counts())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**source_screen_name特征缺失值太多了，该特征表示“用户看到的布局的名字”，也表示用户的听歌来源，比如：**\n",
    "- “Local playlist more”表示用户从本地听音乐\n",
    "- “Online playlist more”表示用户是在线听音乐\n",
    "- “Radio”表示用户从收音机听音乐\n",
    "- “Album more”表示用户是购买唱片听音乐\n",
    "- “Search”表示用户是从搜索进入收听\n",
    "- “Artist more”可能表示的是音乐家的演唱会？\n",
    "等等"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3、单个特征数据探索"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.1、target特征分布情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x108bd7860>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'target')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Number of occurrences')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train[\"target\"])\n",
    "plt.xlabel(\"target\", fontsize=21)\n",
    "plt.ylabel(\"Number of occurrences\", fontsize=21)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**从上图可以看出，0，1分布很均匀**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2、source_system_tab（触发事件的类型，表示app的功能类型）特征分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x121c53828>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Number of source_system_tab')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Number of occurrences')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(15, 8))\n",
    "### Number of occurrences\n",
    "sns.countplot(train['source_system_tab'])\n",
    "plt.xlabel('Number of source_system_tab')\n",
    "plt.ylabel('Number of occurrences')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.3、source_screen_name（用户看到的布局的名字）特征分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1082a4f60>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Number of source_screen_name')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Number of occurrences')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(15, 8))\n",
    "### Number of occurrences\n",
    "sns.countplot(train['source_screen_name'])\n",
    "plt.xlabel('Number of source_screen_name')\n",
    "plt.ylabel('Number of occurrences')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.4、source_type（用户在app上播放音乐的入口的类型）特征分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1082a4630>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0, 'Number of source_type')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Number of occurrences')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(15, 8))\n",
    "### Number of occurrences\n",
    "sns.countplot(train['source_type'])\n",
    "plt.xlabel('Number of source_type')\n",
    "plt.ylabel('Number of occurrences')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4、两两特征数据探索"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.1、source_system_tab和target的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x123c2cf28>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA5cAAAHkCAYAAACqvNujAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3X28ZWVdP/zPFxgbkwd50oxBh4wsBEUZENPUtB8g/VRMfLpLQFCytNRufUXWjYp2Zz/sttCUfEBAzaeMIFOIEMRMxEGRQUwhQRh8GgFRJNKB6/5jrwOb4ZzhzFxzZp8z5/1+vfbrrH2ta63r2mvttc7+7PWwq7UWAAAA6LHVpDsAAADAwidcAgAA0E24BAAAoJtwCQAAQDfhEgAAgG7CJQAAAN2ESwAAALoJlwAAAHQTLgEAAOi2zaQ7MN/tsssubfny5ZPuBgAAwERccskl32+t7Xpv9YTLe7F8+fKsXLly0t0AAACYiKr65mzqOS0WAACAbsIlAAAA3YRLAAAAurnmEgAAYI799Kc/zerVq3PbbbdNuiszWrp0aZYtW5YlS5Zs1PTCJQAAwBxbvXp1tttuuyxfvjxVNenu3ENrLTfccENWr16dPfbYY6Pm4bRYAACAOXbbbbdl5513npfBMkmqKjvvvHPXkVXhEgAAYDOYr8FySm//hEsAAAC6CZcAAAAT8oMf/CBvf/vb57ydCy64IP/xH/8xp20IlwAAABOyoeGytZY77rhjg9sRLgEAALZgxx13XP7rv/4r++67b175ylfmKU95Sh796Ednn332yZlnnpkkueaaa/Kwhz0sRxxxRPbee+9cd911ec973pNf+qVfygEHHJAXv/jFednLXpYkWbNmTZ71rGdl//33z/7775/Pfvazueaaa3LyySfnLW95S/bdd9985jOfmZPX4qdIAAAAJuRNb3pTLr/88lx66aVZu3Ztbr311my//fb5/ve/nwMPPDBPf/rTkyRXXnllTjvttBx44IH51re+lTe84Q354he/mO222y5PfvKT88hHPjJJ8vKXvzyvfOUr8/jHPz7XXnttDj744Hz1q1/NS17ykmy77bZ51ateNWevRbgEAACYB1prec1rXpMLL7wwW221Va6//vp897vfTZI85CEPyYEHHpgkufjii/PEJz4xO+20U5Lk2c9+dr7+9a8nSf7t3/4tV1xxxZ3z/OEPf5hbbrlls/RfuAQAAJgHPvCBD2TNmjW55JJLsmTJkixfvvzO35283/3uN6t53HHHHbnooouydOnSuezqtFxzCQAAMCHbbbddfvSjHyVJbr755jzgAQ/IkiVLcv755+eb3/zmtNPsv//++fSnP52bbropa9euzcc+9rE7xx100EF561vfeufzSy+99B7tzBXhEgAAYEJ23nnnPO5xj8vee++dSy+9NCtXrsw+++yT008/Pb/8y7887TS77bZbXvOa1+SAAw7I4x73uCxfvjw77LBDkuSkk07KypUr84hHPCJ77bVXTj755CTJ0572tJxxxhlzekOfaq3NyYy3FCtWrGgrV66cdDcAAIAF7Ktf/Wp+5Vd+ZZPN75Zbbsm2226btWvX5pnPfGaOPvroPPOZz+ye73T9rKpLWmsr7m1aRy4BAAAWmNe97nXZd999s/fee2ePPfbIYYcdNukuuaEPAADAQvPmN7950l24B+ES5plrT9hn0l2YlQcfv2rSXQAAYB5xWiwAAADdhEsAAAC6CZcAAAB0c80lAADAZrbfq0/fpPO75MQj7rXO2WefnZe//OW5/fbb86IXvSjHHXfcJu2DI5cAAABbuNtvvz0vfelL88lPfjJXXHFFPvjBD+aKK67YpG0IlwAAAFu4iy++OL/4i7+YX/iFX8h97nOfPO95z8uZZ565SdsQLgEAALZw119/fXbfffc7ny9btizXX3/9Jm1DuAQAAKCbcAkAALCF22233XLdddfd+Xz16tXZbbfdNmkbwiUAAMAWbv/998+VV16Zq6++Oj/5yU/yoQ99KE9/+tM3aRt+igQAAGAzm81Ph2xK22yzTd72trfl4IMPzu23356jjz46D3/4wzdtG5t0bgAAAMxLhx56aA499NA5m7/TYgEAAOgmXAIAANBNuAQAAKCbcAkAAEA34RIAAIBuwiUAAADd/BQJAADAZnbtCfts0vk9+PhV91rn6KOPzsc//vE84AEPyOWXX75J208cuQQAAFgUjjrqqJx99tlzNn/hEgAAYBF4whOekJ122mnO5i9cAgAA0E24BAAAoJtwCQAAQDfhEgAAgG5+igQAAGAzm81Ph2xqz3/+83PBBRfk+9//fpYtW5bXv/71OeaYYzbZ/IVLAACAReCDH/zgnM7fabEAAAB0Ey4B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\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(15, 8))\n",
    "sns.countplot(x=\"source_system_tab\", hue=\"target\",data=train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.2、source_screen_name和target的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x122360fd0>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA5gAAAHkCAYAAABbt4AuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3Xu0JWV9J+7PV0AxCnJrHUNDmihqELSVBpkxF0YTQFYUNF7wlwQUA3GUGTXRBE1GCCYZjTpOvC8dCeAY0KgIcVCHEK8xCN3aco3QIJfuILYNggpegPf3R72H3rSnm9OcOn1o+nnW2uvUfqvqrbfu9Tm7du1qrQUAAABm60Hz3QAAAAAeGARMAAAARiFgAgAAMAoBEwAAgFEImAAAAIxCwAQAAGAUAiYAAACjEDABAAAYhYAJAADAKLae7wbc3+2yyy5t0aJF890MAACAebFs2bLvtdYWzGRYAfNeLFq0KEuXLp3vZgAAAMyLqrp2psO6RRYAAIBRCJgAAACMQsAEAABgFL6DCQAAMMd+9rOfZeXKlfnxj388301Zr2233TYLFy7MNttsc5/rEDABAADm2MqVK7Pddttl0aJFqar5bs7Paa1lzZo1WblyZfbYY4/7XI9bZAEAAObYj3/84+y88873y3CZJFWVnXfeedafsAqYAAAAm8D9NVxOGaN9AiYAAACjEDABAADmyfe///28973vnfPpfOELX8hXv/rVOZ+OgAkAADBPNjZgttZy1113bfR0BEwAAIAHuOOPPz5XXXVVFi9enNe85jV55jOfmac+9anZZ599ctZZZyVJrrnmmjz+8Y/PkUcemb333jvXX399PvShD+Vxj3tc9t9//xxzzDE57rjjkiSrV6/O7/zO72S//fbLfvvtl3/5l3/JNddck/e///15xzvekcWLF+fLX/7ynM2PnykBAACYJ29+85tzySWXZPny5bnjjjty2223Zfvtt8/3vve9HHDAAXnOc56TJLnyyitz6qmn5oADDsi///u/501velO+/vWvZ7vttssznvGMPPnJT06SvOpVr8prXvOa/Oqv/mquu+66HHzwwbn88svz8pe/PA9/+MPz2te+dk7nR8AEAAC4H2it5Q1veEO+9KUv5UEPelBWrVqVG2+8MUnyS7/0SznggAOSJBdccEF+4zd+Izvt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\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(15, 8))\n",
    "sns.countplot(x=\"source_screen_name\", hue=\"target\",data=train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.3、source_type和target的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1224f3eb8>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA5oAAAHkCAYAAABfQlATAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzs3Xu4JVV9J/zvTy5pL9xpHUODTYQYEZRIgzgaYyQBZBLARFHHBFAjcYKJMZEEnYwYjPOS0bwk3l8jCBgiMRoCSRBCUNRREbqRO1E6gtB4awFRQlCB9f5RdWBzep9Ld9c5py+fz/Oc59RetarW2rVr165vVe3a1VoLAAAADOVRC90BAAAANi2CJgAAAIMSNAEAABiUoAkAAMCgBE0AAAAGJWgCAAAwKEETAACAQQmaAAAADErQBAAAYFCCJgAAAIPacqE7sKHbeeed29KlSxe6GwAAAAtixYoV322tLV6baQTNGSxdujTLly9f6G4AAAAsiKr6+tpO49JZAAAABiVoAgAAMChBEwAAgEH5jiYAAMAc+/GPf5xVq1blvvvuW+iuTGnRokVZsmRJttpqq/Wel6AJAAAwx1atWpVtttkmS5cuTVUtdHfW0FrLHXfckVWrVmX33Xdf7/m5dBYAAGCO3Xfffdlpp502yJCZJFWVnXbaabAzroImAADAPNhQQ+aEIfsnaAIAACyQ733ve3nf+9435+1ceuml+cIXvjDn7UwQNAEAABbI2gbN1loefPDBtW5H0AQAANhMnHjiifn3f//37LvvvnnDG96Qgw46KM985jOzzz775LzzzkuS3HLLLXnKU56So48+OnvvvXduu+22nHbaafnpn/7pHHDAAXnNa16T173udUmS1atX59d+7dey//77Z//998/nP//53HLLLfnABz6QU089Nfvuu28+97nPzfnzctdZAACABXLKKafkuuuuy1VXXZX7778/9957b7bddtt897vfzYEHHpjDDz88SXLTTTflzDPPzIEHHphvfOMbedvb3pYrr7wy22yzTV7wghfkGc94RpLk9a9/fd7whjfkuc99bm699dYccsghufHGG/Pa1742j3vc4/LGN75xXp6XoAkAALABaK3lzW9+cz772c/mUY96VG6//fZ8+9vfTpI86UlPyoEHHpgkufzyy/PzP//z2XHHHZMkL3nJS/LVr341SfKv//qvueGGGx6a5/e///3cc8898/xMBE0AAIANwtlnn53Vq1dnxYoV2WqrrbJ06dKHfm7ksY997Kzm8eCDD+ayyy7LokWL5rKrM/IdTQAAgAWyzTbb5Ac/+EGS5O67787jH//4bLXVVvn0pz+dr3/962On2X///fOZz3wmd911V+6///584hOfeGjcwQcfnHe/+90PPb7qqqvWaGc+CJoAAAALZKeddspznvOc7L333rnqqquyfPny7LPPPjnrrLPyMz/zM2On2WWXXfLmN785BxxwQJ7znOdk6dKl2W677ZIk73rXu7J8+fI8/elPz1577ZUPfOADSZJf+ZVfybnnnjtvNwOq1tqcN7IxW7ZsWVu+fPlCdwMAANiI3XjjjXnqU5862PzuueeePO5xj8v999+fF73oRXnVq16VF73oRes933H9rKoVrbVlazMfZzQBAAA2Mm9961uz7777Zu+9987uu++eI488cqG79AhuBgQAALCReec737nQXZiWoAmbqFtP3mfe2trtLdfOW1sAAGz4XDoLAADAoARNAAAABiVoAgAAMChBEwAAYDNw4YUX5ilPeUr22GOPnHLKKXPa1pzdDKiqTk/yy0m+01rbe9K4P0jyziSLW2vfrapK8pdJDktyb5JjW2tX9nWPSfLH/aR/2lo7sy/fL8kZSR6d5IIkr2+ttaraMcnfJlma5JYkR7XW7pquDQAAgPm03wlnDTq/Fe84etrxDzzwQI4//vhcfPHFWbJkSfbff/8cfvjh2WuvvQbtx4S5PKN5RpJDJxdW1a5JDk5y60jxC5Ps2f8dl+T9fd0dk5yU5FlJDkhyUlXt0E/z/iSvGZluoq0Tk1zSWtszySX94ynbAAAA2NRdfvnl2WOPPfJTP/VT2XrrrfOyl70s55133py1N2dBs7X22SR3jhl1apI/TNJGyo5IclbrXJZk+6p6YpJDklzcWruztXZXkouTHNqP27a1dllrrSU5K8mRI/M6sx8+c1L5uDYAAAA2abfffnt23XXXhx4vWbIkt99++5y1N6/f0ayqI5Lc3lq7etKoXZLcNvJ4VV82XfmqMeVJ8oTW2jf74W8lecIMbQAAADCgOfuO5mRV9Zgkb0532ey86L+z2Wau+UhVdVy6y2uz2267Dd4vAACA+bTLLrvkttsePu+2atWq7LLL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\n",
      "text/plain": [
       "<Figure size 1080x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure(figsize=(15, 8))\n",
    "sns.countplot(x=\"source_type\", hue=\"target\",data=train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5、对以上3个特征分别新增一列，表示是否有缺失值\n",
    "\n",
    "**由于上面3个特征的缺失值比较多，所以各新增一列，表示是否有缺失值，分析跟target的关系**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_system_tab</th>\n",
       "      <th>source_system_tab_missing</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>explore</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>my library</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>my library</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>my library</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>explore</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>explore</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>my library</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>explore</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>my library</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>my library</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  source_system_tab  source_system_tab_missing\n",
       "0           explore                          0\n",
       "1        my library                          0\n",
       "2        my library                          0\n",
       "3        my library                          0\n",
       "4           explore                          0\n",
       "5           explore                          0\n",
       "6        my library                          0\n",
       "7           explore                          0\n",
       "8        my library                          0\n",
       "9        my library                          0"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看source_system_tab,source_screen_name,source_type有多少种组合\n",
    "# df_train_groupby = train.groupby(['source_system_tab','source_screen_name','source_type'])['target'].size().reset_index(name='count')\n",
    "# df_train_groupby[\"source\"] = df_train_groupby['source_system_tab'] + \"|\" + df_train_groupby['source_screen_name']  + \"|\" + df_train_groupby['source_type']\n",
    "\n",
    "train['source_system_tab_missing'] = train['source_system_tab'].apply(lambda x: 1 if pd.isnull(x) else 0)\n",
    "train[['source_system_tab','source_system_tab_missing']].head(10)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1536750b8>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x=\"source_system_tab_missing\", hue=\"target\",data=train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_screen_name</th>\n",
       "      <th>source_screen_name_missing</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Explore</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Explore</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Explore</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Explore</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Local playlist more</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    source_screen_name  source_screen_name_missing\n",
       "0              Explore                           0\n",
       "1  Local playlist more                           0\n",
       "2  Local playlist more                           0\n",
       "3  Local playlist more                           0\n",
       "4              Explore                           0\n",
       "5              Explore                           0\n",
       "6  Local playlist more                           0\n",
       "7              Explore                           0\n",
       "8  Local playlist more                           0\n",
       "9  Local playlist more                           0"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['source_screen_name_missing'] = train['source_screen_name'].apply(lambda x: 1 if pd.isnull(x) else 0)\n",
    "train[['source_screen_name','source_screen_name_missing']].head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x152e6b550>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x=\"source_screen_name_missing\", hue=\"target\",data=train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>source_type</th>\n",
       "      <th>source_type_missing</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>online-playlist</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>local-playlist</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>local-playlist</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>local-playlist</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>online-playlist</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>online-playlist</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>local-playlist</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>online-playlist</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>local-library</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>local-library</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       source_type  source_type_missing\n",
       "0  online-playlist                    0\n",
       "1   local-playlist                    0\n",
       "2   local-playlist                    0\n",
       "3   local-playlist                    0\n",
       "4  online-playlist                    0\n",
       "5  online-playlist                    0\n",
       "6   local-playlist                    0\n",
       "7  online-playlist                    0\n",
       "8    local-library                    0\n",
       "9    local-library                    0"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train['source_type_missing'] = train['source_type'].apply(lambda x: 1 if pd.isnull(x) else 0)\n",
    "train[['source_type','source_type_missing']].head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x153a755c0>"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(x=\"source_type_missing\", hue=\"target\",data=train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**以上3各特征缺失的数据中，正负样本比例差不多各占一半**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6、保存特征到新文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 把上面的特征工程合并在一起\n",
    "fe_train_data = pd.concat([train['msno'], train['song_id'], train['source_system_tab_missing'], \n",
    "                           train['source_screen_name_missing'], train['source_type_missing'], \n",
    "                           train['target']], axis = 1, ignore_index=False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>msno</th>\n",
       "      <th>song_id</th>\n",
       "      <th>source_system_tab_missing</th>\n",
       "      <th>source_screen_name_missing</th>\n",
       "      <th>source_type_missing</th>\n",
       "      <th>target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=</td>\n",
       "      <td>BBzumQNXUHKdEBOB7mAJuzok+IJA1c2Ryg/yzTF6tik=</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=</td>\n",
       "      <td>bhp/MpSNoqoxOIB+/l8WPqu6jldth4DIpCm3ayXnJqM=</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=</td>\n",
       "      <td>JNWfrrC7zNN7BdMpsISKa4Mw+xVJYNnxXh3/Epw7QgY=</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=</td>\n",
       "      <td>2A87tzfnJTSWqD7gIZHisolhe4DMdzkbd6LzO1KHjNs=</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=</td>\n",
       "      <td>3qm6XTZ6MOCU11x8FIVbAGH5l5uMkT3/ZalWG1oo2Gc=</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                           msno  \\\n",
       "0  FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=   \n",
       "1  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
       "2  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
       "3  Xumu+NIjS6QYVxDS4/t3SawvJ7viT9hPKXmf0RtLNx8=   \n",
       "4  FGtllVqz18RPiwJj/edr2gV78zirAiY/9SmYvia+kCg=   \n",
       "\n",
       "                                        song_id  source_system_tab_missing  \\\n",
       "0  BBzumQNXUHKdEBOB7mAJuzok+IJA1c2Ryg/yzTF6tik=                          0   \n",
       "1  bhp/MpSNoqoxOIB+/l8WPqu6jldth4DIpCm3ayXnJqM=                          0   \n",
       "2  JNWfrrC7zNN7BdMpsISKa4Mw+xVJYNnxXh3/Epw7QgY=                          0   \n",
       "3  2A87tzfnJTSWqD7gIZHisolhe4DMdzkbd6LzO1KHjNs=                          0   \n",
       "4  3qm6XTZ6MOCU11x8FIVbAGH5l5uMkT3/ZalWG1oo2Gc=                          0   \n",
       "\n",
       "   source_screen_name_missing  source_type_missing  target  \n",
       "0                           0                    0       1  \n",
       "1                           0                    0       1  \n",
       "2                           0                    0       1  \n",
       "3                           0                    0       1  \n",
       "4                           0                    0       1  "
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fe_train_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "msno                          0\n",
       "song_id                       0\n",
       "source_system_tab_missing     0\n",
       "source_screen_name_missing    0\n",
       "source_type_missing           0\n",
       "target                        0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fe_train_data.apply(lambda x: sum(x.isnull()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**所有特征缺失值均已处理，将结果保存到新的文件中**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 保存结果到文件\n",
    "fe_train_data.to_csv(dpath + 'LR_data/FE_Train.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
